/*
# -*- coding: utf-8 -*-
# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

 */
//import { _decorator, Component, Node } from 'cc';
//import Game from './Game';
import { tt } from './Global';
import MaidianNew from './maidianNew(4)(2)';
const { ccclass, property } = cc._decorator;

@ccclass('ShowAD')
export class ShowAD extends cc.Component {

    private static m_instance: ShowAD;
	public static get Instance(): ShowAD {
		if (this.m_instance == null) {
			this.m_instance = new ShowAD();
		}
		return this.m_instance;
	}
    start() {
        setTimeout(() => {
            this.playInterstitialAd();
        }, 2000);
    }

    update(deltaTime: number) {
        
    }

    GetTableVideo() {
        // 生成一个随机整数，范围在1到6之间
        let randomInt = Math.floor(Math.random() * 6) + 1;
        let TableScreenADStr = "ml0d60l7lb925l122b";

        // 根据随机数选择对应的表格屏幕广告字符串
        switch (randomInt) {
            case 1:
                TableScreenADStr = "ml0d60l7lb925l122b";
                break;
            case 2:
                TableScreenADStr = "5a8l889g7fi38126b1";
                break;
            case 3:
                TableScreenADStr = "25qadh17ftlha364eb";
                break;
            case 4:
                TableScreenADStr = "76f540i9k2ceambo8d";
                break;
            case 5:
                TableScreenADStr = "cgiml81jel6812308d";
                break;
            case 6:
                TableScreenADStr = "1h39988df519fjedgh";
                break;
            default:
                TableScreenADStr = "1h39988df519fjedgh";
                break;
        }

        // 返回选中的表格屏幕广告字符串
        return TableScreenADStr;
    }

    GetTableScreenVideo() {
        // 生成一个随机整数，范围在1到6之间
        let randomInt = Math.floor(Math.random() * 3) + 1;
        let TableScreenADStr = "23odd695nfce122plm";

        // 根据随机数选择对应的表格屏幕广告字符串
        switch (randomInt) {
            case 1:
                TableScreenADStr = "23odd695nfce122plm";
                break;
            case 2:
                TableScreenADStr = "995ccc9b28h55qsf7i";
                break;
            case 3:
                TableScreenADStr = "69pel27hc983okme0g";
                break;
            default:
                TableScreenADStr = "69pel27hc983okme0g";
                break;
        }

        // 返回选中的表格屏幕广告字符串
        return TableScreenADStr;
    }




    //激励广告
    public showRewardedAd() {
        // 请求激励广告
        let videoAd = tt.createRewardedVideoAd({
            //adUnitId: "k8b67ifdfg3k578j8a",
            adUnitId: this.GetTableVideo(),
            multiton: true,
            multitonRewardMsg: ['更多奖励1', '更多奖励2', '更多奖励3'],
            multitonRewardTimes: 999,
            progressTip: false,
        });
        videoAd.show().then(() => {
            console.log("视频广告展示");
        });
        videoAd.onClose(res => {
            // 用户点击了【关闭广告】按钮
            // 小于 2.1.0 的基础库版本，res 是一个 undefined
            if (res && res.isEnded || res === undefined) {
                // 正常播放结束，可以下发游戏奖励的逻辑
                window.maidianback(function(res) {
                    console.log("回调结果: ", res);
                });
                console.log(`观看成功`);
                console.log(`watch ${res.count} video`);
                //director.resume();
                //todo：插屏广告等待播放的计时恢复...             
            }
            else {
                // 播放中途退出，不下发游戏奖励
                //director.resume();
                //todo：插屏广告等待播放的计时恢复...    
            }
        });
    }

    // showRewardedAdAddScore() {
    //     // 请求激励广告
    //     let videoAd = tt.createRewardedVideoAd({
    //         adUnitId: "4dc1h01knl962m4q0c",
    //         multiton: true,
    //         multitonRewardMsg: ['更多奖励1', '更多奖励2', '更多奖励3'],
    //         multitonRewardTimes: 3,
    //         progressTip: false,
    //     });
    //     videoAd.show().then(() => {
    //         console.log("视频广告展示");
    //     });
    //     videoAd.onClose(res => {
    //         // 用户点击了【关闭广告】按钮
    //         // 小于 2.1.0 的基础库版本，res 是一个 undefined
    //         if (res && res.isEnded || res === undefined) {
    //             // 正常播放结束，可以下发游戏奖励的逻辑
    //             Game.getInstance().score += 10;
    //             Game.getInstance().scoreLabel.string = `${Game.getInstance().score}`;

    //             console.log(`watch ${res.count} video`);
    //             //director.resume();
    //             //todo：插屏广告等待播放的计时恢复...             
    //         }
    //         else {
    //             // 播放中途退出，不下发游戏奖励
    //             //director.resume();
    //             //todo：插屏广告等待播放的计时恢复...    
    //         }
    //     });
    // }


    //插屏广告
    playInterstitialAd(){
        console.log('插屏广告准备中...');
        //const obj ={ adUnitId: "1i46h7b9eb6816ie2g" };
        const obj ={ adUnitId: this.GetTableScreenVideo() };
        const interstitiaAd = tt.createInterstitialAd(obj);
        let canReTry = true;
        interstitiaAd.onLoad(onLoadHandle); //创建会自动load
        function onLoadHandle() {
        interstitiaAd.show().then(() => {
            window.maidianback(function(res) {
                    console.log("回调结果: ", res);
                });
                setTimeout(() => {
                    interstitiaAd.load(); // 重新尝试加载广告
                }, 80000); // 80秒后重试，可以根据实际需求调整等待时间
            console.log("插屏广告展示成功");
            
        });
        }
 
        interstitiaAd.onError(onErrorHandle); // 自动load 的失败会走到这里
        function onErrorHandle(err) {
            // 等待一定时间后，或者等待下次需要再展示，不能一直尝试。
            if (canReTry) {
                canReTry = false;
                setTimeout(() => {
                    interstitiaAd.load(); // 重新尝试加载广告
                }, 800000); // 800秒后重试，可以根据实际需求调整等待时间
            } else {
                tt.showToast({
                title: "暂无广告",
                icon: "none",
                });
            }
        }
    }
}


